package com.hl233.framework.nettyServer;

import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.timeout.IdleStateEvent;
import io.netty.handler.timeout.IdleStateHandler;
/**
 * @author 张振强15065206763
 * @create 2024-09-07
 */
public class HeartbeatHandler extends IdleStateHandler {

    public HeartbeatHandler(int readerIdleTimeSeconds, int writerIdleTimeSeconds, int allIdleTimeSeconds) {
        super(readerIdleTimeSeconds, writerIdleTimeSeconds, allIdleTimeSeconds);
    }

    @Override
    protected void channelIdle(ChannelHandlerContext ctx, IdleStateEvent evt) throws Exception {
//        String deviceNameAttr = ctx.channel().attr("deviceName").get();

//        if(!"Server".equals(deviceNameAttr)){
            //LogUtil.LOGI(HeartbeatHandler.class.getName(),"客户端超时类型："+evt.state()+";通道标识："+deviceNameAttr);

//            if (evt.state() == IdleState.READER_IDLE) {
//                // 一段时间内没有收到过消息
//                LogUtil.LOGI(HeartbeatHandler.class.getName(),"客户端读取超时，关闭通道:"+deviceNameAttr);
//                ctx.close();
//            }

//            if (evt.state() == IdleState.WRITER_IDLE) {
//                //一段时间内没有向外发送过消息
//                LogUtil.LOGI(HeartbeatHandler.class.getName(),"客户端写入超时，关闭通道:"+deviceNameAttr);
//                //ctx.close();
//            }

//            if (evt.state() == IdleState.ALL_IDLE) {
//                //一段时间内既没收到过消息也没发送过消息
//                LogUtil.LOGI(HeartbeatHandler.class.getName(),"客户端超时，关闭通道:"+deviceNameAttr);
//                //ctx.close();
//            }
//        }
    }
}
